java outOfMemoryError 与 stringbuilder
全部标签 我计划对StringBuilders中的最后一个字符执行大量删除操作。使用sb.setLength(sb.length()-1);的解决方案对我来说看起来不错。但是,由于这些删除将处于循环中,我需要知道它的复杂性。我的理解是,此操作只是递减我的StringBuilder对象的一些私有(private)属性,并且不执行任何字符本身的复制/克隆/复制,因此它的时间复杂度为O(1),并且应该可以快速运行。我说得对吗? 最佳答案 如果新长度小于旧长度,则为O(1),在您的情况下。JDK的源码网上有,大家可以自行查看。以Java8为例,set
当我调用这个方法时,我得到了一个javaoutOfMemoryError-我在一个循环中使用它来按顺序解析许多大文件。我的猜测是result.toString()在循环期间没有正确收集垃圾。如果是这样,我该如何解决?privateStringmatchHelper(Stringbuffer,Stringregex,Stringmethod){Patternabbrev_p=Pattern.compile(regex);//normsU.S.A.,B.S.,PH.D,PH.D.Matcherabbrev_matcher=abbrev_p.matcher(buffer);StringBuf
我知道StringBuffer和StringBuilder的区别。readhere!一般来说,正如javadoc所说,Wherepossible,itisrecommendedthatthisclassbeusedinpreferencetoStringBufferasitwillbefasterundermostimplementations.但是,StringBuilder的javadoc也说:InstancesofStringBuilderarenotsafeforusebymultiplethreads.Ifsuchsynchronizationisrequiredthenit
我想知道比较MessageFormat或StringBuilder类。举个例子,我有一个字符串。对于性能明智的哪一个是快速的:java.text.MessageFormat.format或StringBuilder("Test").append("Hello")?Stringtxt=java.text.MessageFormat.format("Test{0}","Hello")Stringtxt1=newStringBuilder("Test").append("Hello")我只想知道在最佳实践或性能方面使用哪个 最佳答案 自己
StringBuildersb="asd";在Java中,这种说法显然是错误的。像eclipse这样的IDE会告诉你:cannotconvertfromStringtoStringBuilder但是,String对象可以由=运算符初始化。我想知道一些与内存分配相关的原因。 最佳答案 因为StringBuilder是一个对象,它需要被构造。您收到错误是因为String不是StringBuilder。String比较特殊,它被设计为介于primitive和class1之间。您可以将字符串文字直接分配给String变量,而不是调用构造函数
这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:AtwhatpointdoesusingaStringBuilderbecomeinsignificantoranoverhead?相关/重复问题StringvsStringBuilderAtwhatpointdoesusingaStringBuilderbecomeinsignificantoranoverhead?尽可能简单明了,我有这个方法1:cmd2.CommandText=("insertinto"+TableName+"values("+string.Join(",",insertvalues)+
我阅读了一些有关Java编程语言中String和StringBuilder优缺点的文章。在其中一篇文章中,作者提到:StringBuilderisnotThread-safe,soinmultiplethreadsuseStringBuffer.很遗憾,我无法理解这意味着什么。您能否解释一下String、StringBuilder和StringBuffer之间的区别,尤其是在“线程安全”的上下文中。如果您能用代码示例进行描述,我将不胜感激。 最佳答案 如果多个线程正在修改StringBuilder的同一个实例,结果可能会出乎意料-即
StringBuffervsStringBuilderVsStringTokenizer在内部实现上有什么区别。什么时候使用这些。敬请期待答案。更新:-我也在浏览源代码。 最佳答案 StringBuffer-在JDK1.0中引入-是线程安全的(它的所有方法都是同步),而StringBuilder-自JDK1.5-不是。所以一般情况下推荐使用后者。StringTokenizer的目的与前两者完全不同:将字符串切割成片段,而不是组装。正如@Henning指出的那样,它从JDK1.5开始也“退休”了——建议改用String.split。
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。StringBuilder之间的差异和StringBuffer在Java中有据可查,并且已被toucheduponinStackOverflow基本上,StringBuilder是StringBuffer的非同步副本,具有几乎相同的接口(interface),因为它旨在作为的快速替代品字符串缓冲区。它们的API实际上是相同的,它们实际上是当前JDK中相同
1.StringBuffer和StringBuilder的区别因为字符串不可变,当字符串拼接(尤其是使用+号操作符)时,需要考量性能的问题,不多毫无顾忌的创建太多String对象,从而对内存造成不必要压力。因此Java专门设计StringBuilder类来解决该问题publicfinalclassStringBufferextendsAbstractStringBuilderimplementsSerializable,CharSequence{publicStringBuffer(){super(16);}publicsynchronizedStringBufferappend(String